package com.hjk.common.utils.concurrency;

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;

import java.util.Properties;

/**
 * @author huangjunkai
 * @version 1.0
 * @date 2020/11/10 9:14
 */
@Slf4j
public class SystemUtils extends org.apache.commons.lang3.SystemUtils {

    @Test
    public void test1() {
        Properties props = System.getProperties();
        props.forEach((k, v) -> System.out.println("String " + k.toString().replaceAll("\\.", "_").toUpperCase() + " = " + "\"" + k + "\"" + ";"));
    }

    @Test
    public void test2() {
        System.out.println(getOsName());

    }

    /**
     * 获取所有系统参数
     *
     * @return
     */
    public static Properties getProperties() {
        return System.getProperties();
    }

    /**
     * 获取项目所在目录
     *
     * @return 项目所在目录路径
     */
    public static String getUserDirStr() {
        return System.getProperty(SystemConstant.USER_DIR);
    }

    /**
     * 操作系统
     */
    public static String getOsName() {
        return System.getProperty(SystemConstant.OS_NAME);
    }


    /**
     * 得到当前应用的系统路径
     */
    public static String getSysPath() {
        //从classpath根开始查找
        String path = Thread.currentThread().getContextClassLoader()
                .getResource("").toString();
        String temp = path.replaceFirst("file:/", "").replaceFirst("WEB-INF/classes/", "");
        //文件分隔符（在 UNIX 系统中是“/”）
        String separator = System.getProperty(SystemConstant.FILE_SEPARATOR);
        return temp.replaceAll("/", separator + separator);
    }

    /**
     * 得到当前应用生成class文件的系统路径
     **/
    public static String getClassPath() {
        String path = Thread.currentThread().getContextClassLoader()
                .getResource("").toString();
        String temp = path.replaceFirst("file:/", "");
        String separator = System.getProperty(SystemConstant.FILE_SEPARATOR);
        return temp.replaceAll("/", separator + separator);
    }

    /**
     * 默认的临时文件路径
     **/
    public static String getSystemTmpPath() {
        return System.getProperty(SystemConstant.JAVA_IO_TMPDIR);
    }

    /**
     * 文件分隔符（在 UNIX 系统中是“/”）
     **/
    public static String getSeparator() {
        return System.getProperty(SystemConstant.FILE_SEPARATOR);
    }

}
